﻿#include "AllPage.h"
#include "Display.h"

#define TAG "TestPage"
#include "CloudLog.h"

typedef struct {
    PAGE_BASE_OBJ* Pbo;										// 继承的页面基础对象结构体 必须要放在最前面

    char Text[128];                                         // 接收从打开页面时传递过来的文字
    void (*Return)(void* arg, char* text);                  // 接收从打开页面时传递过来的回调函数指针用于页面关闭时返回文字

    lv_style_t Style;
    lv_obj_t* Container;
    //lv_obj_t* textarea;  // 新增文本框指针

    lv_obj_t* ViewText;                                     // 视图对象指针，本页全局使用 关闭页面时记得摧毁
} PAGE_GLOBAL_VARIABLE;										// 本页使用的全局变量结构体

static PAGE_GLOBAL_VARIABLE* pgvar;							// 本页使用的全局 页面关闭会摧毁		


// 处理遥控器按键事件
static bool msgListener(void* arg, int value) {
    switch (value) {
    case DMT_IR | IR_RECORD: 								// 测试编辑
        TestPageClose();
        break;
    default:
        return false;
    }
    return true;
}

static void timListener(void* arg) {
    CLOGI(TAG, "TestPage Listener timer");
}

static void viewInit(PAGE_VIEW_BASE* viewGroup) {
    pgvar->ViewText = lv_label_create(viewGroup->Object);
    lv_obj_set_pos(pgvar->ViewText, 0, 0);					// 设置标签的位置
    LvglStr12Text(pgvar->ViewText, RTCOLOR_WHITE, pgvar->Text);

}
////////////////////////////////////////////////////////////////////////////////////////////////// 
// 页面前面一般定义变量及处理内部业务逻辑 一般使用静态变量及函数 static 就不容易出现同名函数冲撞了
////////////////////////////////////////////////////////////////////////////////////////////////// 

// 页面关闭函数 注意记得删除所有新建的view
void TestPageClose(void) {
    lv_obj_delete(pgvar->ViewText);
    if (pgvar->Return != NULL) {
        pgvar->Return(NULL, pgvar->Text);                   // 将修改的pgvar->Text返回给调用者
    }
    PageClose(pgvar->Pbo);
}
bool TestPageStart(PAGE_BASE_OBJ* pbo, PAGE_CARRY_BASE* carry) {
    pgvar = PageInfoNew(pbo, sizeof(PAGE_GLOBAL_VARIABLE), carry);
    if (pgvar != NULL) {
        PAGE_CARRY_MORE* more = (PAGE_CARRY_MORE*)carry;
        TxtStrCpy(pgvar->Text, sizeof(pgvar->Text), more->Text);  // 接收从打开页面时传递过来的文字
        pgvar->Return = more->Return;                       // 接收从打开页面时传递过来的回调函数指针用于页面关闭时返回文字

        viewInit(&carry->ViewGroup);
        PageMsgListener(pbo, msgListener);
        PageTimListener(pbo, timListener, 2000);
        return true;
    }
    return false;
}